前面介紹了兩個搭配Data Partitioning使用的DHT演算法 CHORD、Kademlia。
今天特別拉出來介紹一下這個現在已經退流行的P2P應用 - BitTorrent。
不知道現在還有沒有人還在用P2P下載檔案,必竟現在Streaming技術非常成熟,各種娛樂也不再是負擔不起的時代。但是BitTorrent從技術面探討仍然有非常多值得學習的地方。
如同之前所說,為了能夠將檔案放到網路上讓大家下載,有幾個主要的問題。
而BitTorrent就是一個綜合了各種策略的P2P檔案分享分散式系統。
Client也分成兩種
為了增加下載速度與維護檔案完整並備份
檔案被分成好幾個Data Chunks
下載可以指定從某個Peers那邊下載特定的Data Chunks
Swarming:
此種方法可以做到快速將Data Chunks複製分散到好幾個Peers身上,避免某些Peer下線後Data Chunks消失,後續的Clients無法下載完整檔案。
而因為P2P系統 Peers會不斷加入與離開,而目前每一個Peers手上存的Data Chunks為了避免不斷重新分配,且紀錄彼此位置,就可以使用Kademlia這種Consistenct Hashing來處理。
有經驗的都知道下載檔案最重要的就是BT種子(?
一般說的就是這個.torrent檔,究竟裡面有什麼東西呢?
Rarest First: 優先下載稀有的Data Chunks
Random First: 第一個Data Chunks隨機選則下載
Endgame Mode: 當一個檔案下載到最後只差一兩個Data Chunks,就不特別找某個Peers下載,而是直接Broadcast請求給所有的Peers,以避免花過久的時間下載最後一兩個Data Chunks,更快成為有完整檔案的Seeders
以上就是BitTorrent的介紹,雖然現在已經很少有人在下載BT了。
但是這樣的一種檔案分享系統,還是值得學習做一個參考。
Reference: